package com.own.business.system.dictionary.adapter.method;

import com.own.business.system.dictionary.adapter.base.BaseDictionaryModel;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * SystemDictionaryInfoMethod
 *
 * @author chenxueli
 * @date 2023-06-21 10:07:00
 */
@Component
public interface SystemDictionaryInfoMethod {

    /**
     * 根据id获取字典信息
     *
     * @param id 主键id
     * @return 字典信息
     */
    BaseDictionaryModel getItemById(Long id);

    /**
     * 根据name和rootCode获取id
     *
     * @param name     名称
     * @param rootCode 根code
     * @return id
     */
    Long getIdByNameAndRootCode(String name, String rootCode);

    /**
     * 根据code获取字典信息
     *
     * @param code 数据字典编号
     * @return 字典信息
     */
    BaseDictionaryModel getItemByCode(String code);

    /**
     * 根据id获取字典信息
     *
     * @param id 主键id
     * @return 字典信息
     */
    default BaseDictionaryModel getParentById(Long id) {
        return getItemById(id);
    }

    /**
     * 根据根code获取字典信息
     *
     * @param code 根code
     * @return 字典信息
     */
    List<? extends BaseDictionaryModel> listByRootCode(String code);

}
